﻿using System;
using System.Data;
using System.Data.SqlClient;
using Company.BLL.WS.KDT.SXXK;
using Company.BLL.WS.SXXK;
using System.Data.Common;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
using System.Xml;
namespace Company.BLL.KDT.SXXK
{
    public partial class NguyenPhuLieuDangKy
    {
        private NguyenPhuLieuCollection _NPLCollection = new NguyenPhuLieuCollection();

        public NguyenPhuLieuCollection NPLCollection
        {
            set { this._NPLCollection = value; }
            get { return this._NPLCollection; }
        }

        //-----------------------------------------------------------------------------------------
        public void LoadNPLCollection()
        {            
            this._NPLCollection = NguyenPhuLieu.SelectCollectionBy_Master_ID(this.ID);
        }

        //-----------------------------------------------------------------------------------------

        public bool InsertUpdateFull()
        {
            bool ret;
            SqlDatabase db = (SqlDatabase)DatabaseFactory.CreateDatabase();
            using (SqlConnection connection = (SqlConnection)db.CreateConnection())
            {
                connection.Open();
                SqlTransaction transaction = connection.BeginTransaction();
                try
                {
                    if (this._ID == 0)
                        this._ID = this.InsertTransaction(transaction);
                    else
                        this.UpdateTransaction(transaction);

                    foreach (NguyenPhuLieu nplDetail in this._NPLCollection)
                    {
                        if (nplDetail.ID == 0)
                        {
                            nplDetail.Master_ID = this._ID;
                            nplDetail.ID = nplDetail.InsertTransaction(transaction);
                        }
                        else
                        {
                            nplDetail.UpdateTransaction(transaction);
                        }
                    }
                    transaction.Commit();
                    ret = true;
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw new Exception(ex.Message);
                }
                finally
                {
                    connection.Close();
                }
            }
            return ret;
        }

        public void InsertUpdateFull(SqlTransaction transaction)
        {
            if (this._ID == 0)
                this._ID = this.InsertTransaction(transaction);
            else
                this.UpdateTransaction(transaction);

            foreach (NguyenPhuLieu nplDetail in this._NPLCollection)
            {
                if (nplDetail.ID == 0)
                {
                    nplDetail.Master_ID = this._ID;
                    nplDetail.ID = nplDetail.InsertTransaction(transaction);
                }
                else
                {
                    nplDetail.UpdateTransaction(transaction);
                }
            }
        }

        //public DataTable selectNPLDangKyDynamic(string where)
        //{
        //    DataSet ds = new DataSet();
        //    SqlDatabase db = (SqlDatabase)DatabaseFactory.CreateDatabase();
        //    string sql = "SELECT a.ID,SoTiepNhan,NgayTiepNhan,MaHaiQuan,MaDoanhNghiep,TrangThaiXuLy,b.Ten as TenHaiQuan "+
        //                 "FROM t_KDT_SXXK_NguyenPhuLieuDangKy a INNER JOIN t_HaiQuan_DonViHaiQuan b on a.MaHaiQuan = b.ID WHERE ";
        //    if (where != string.Empty) sql = sql + where;
        //    DbCommand dbCommand = db.GetSqlStringCommand(sql);
        //    db.LoadDataSet(dbCommand, ds, "NPLDangKy");
        //    return ds.Tables[0];
        //}
        //-----------------------------------------------------------------------------------------

        #region WebService Methods của Softech

        //-----------------------------------------------------------------------------------------
        /// <summary>
        /// Kiểm tra sự tồn tại của các mã nguyên phụ liệu. 
        /// </summary>
        /// <returns>Danh sách nguyên phụ liệu đã tồn tại.</returns>
        public NguyenPhuLieuCollection WSCheckExist()
        {
            // Chuẩn bị dữ liệu để gửi qua WEB SERVICE.
            SXXKService sxxkService = new SXXKService();
            string[] danhsachNPL = new string[this.NPLCollection.Count];
            for (int i = 0; i < this.NPLCollection.Count; i++)
            {
                danhsachNPL[i] = this.NPLCollection[i].Ma;
            }
            string[] danhsachNPLDaDangKy = sxxkService.NguyenPhuLieu_CheckExist(this.MaHaiQuan, this.MaDoanhNghiep, danhsachNPL);

            // Dữ liệu trả về.
            NguyenPhuLieuCollection collection = new NguyenPhuLieuCollection();
            foreach (string s in danhsachNPLDaDangKy)
            {
                foreach (NguyenPhuLieu npl in this.NPLCollection)
                {
                    if (npl.Ma == s)
                    {
                        collection.Add(npl);
                        break;
                    }
                }
            }
            return collection;
        }

        //-----------------------------------------------------------------------------------------
        public long WSSend(ref string[] DanhSachDaDangKy)
        {
            // Chuẩn bị dữ liệu để gửi qua WEB SERVICE.
            // Lấy thông tin đăng ký.
            KDT_SXXK_Service kdtService = new KDT_SXXK_Service();
            NguyenPhuLieuDangKyInfo webNPLDangKyInfo = new NguyenPhuLieuDangKyInfo();
            webNPLDangKyInfo.MaHaiQuan = this._MaHaiQuan;
            webNPLDangKyInfo.MaDoanhNghiep = this._MaDoanhNghiep;
            webNPLDangKyInfo.MaDaiLy = this.MaDaiLy;
            webNPLDangKyInfo.SoTiepNhan = this.SoTiepNhan;
            webNPLDangKyInfo.NamTiepNhan = (short)this.NgayTiepNhan.Year;
            webNPLDangKyInfo.NgayTiepNhan = this.NgayTiepNhan;
            // Lấy danh sách nguyên phụ liệu.
            int count = this._NPLCollection.Count;
            webNPLDangKyInfo.NPLInfoCollection = new NguyenPhuLieuInfo[count];
            int i = 0;
            foreach (NguyenPhuLieu nplDetail in this._NPLCollection)
            {
                NguyenPhuLieuInfo webNPLInfo = new NguyenPhuLieuInfo();
                webNPLInfo.MaHaiQuan = this._MaHaiQuan;
                webNPLInfo.MaDoanhNghiep = this._MaDoanhNghiep;
                webNPLInfo.Ma = nplDetail.Ma;
                webNPLInfo.Ten = nplDetail.Ten;
                webNPLInfo.MaHS = nplDetail.MaHS;
                webNPLInfo.DVT_ID = nplDetail.DVT_ID;
                webNPLDangKyInfo.NPLInfoCollection[i] = webNPLInfo;
                i++;
            }

            // Thực hiện gửi dữ liệu.
            this._SoTiepNhan = kdtService.NguyenPhuLieu_Send(webNPLDangKyInfo, ref DanhSachDaDangKy);
            if (this._SoTiepNhan > 0)
            {
                this._TrangThaiXuLy = BLL.TrangThaiXuLy.CHO_DUYET;
                this._NgayTiepNhan = DateTime.Today;
                this.InsertUpdateFull();
            }
            return this._SoTiepNhan;
        }

        //-----------------------------------------------------------------------------------------
        /// <summary>
        /// Xóa thông tin đăng ký tại Hải quan.
        /// </summary>
        public bool WSCancel()
        {
            KDT_SXXK_Service kdtService = new KDT_SXXK_Service();
            bool result = kdtService.NguyenPhuLieu_Cancel(this._SoTiepNhan, this._MaHaiQuan, this._MaDoanhNghiep, this._NgayTiepNhan.Year);
            if (result)
            {
                // Trả lại trạng thái chưa khai báo.
                this.SoTiepNhan = 0;
                this.NgayTiepNhan = new DateTime(1900, 1, 1);
                this.TrangThaiXuLy = BLL.TrangThaiXuLy.CHUA_KHAI_BAO;
                this.Update();
            }
            return result;
        }

        /// <summary>
        /// Cập nhật dữ liệu từ client -> server.
        /// </summary>
        /// <param name="DanhSachDaDangKy">Danh sách nguyên phụ liệu đã đăng ký.</param>
        /// <returns>0: Không thành công; 1: Thành công; 2: Đã duyệt, không thể cập nhật; 3: Có một số nguyên phụ liệu đã đăng ký.</returns>
        public int WSUpload(ref string[] DanhSachDaDangKy)
        {
            // Chuẩn bị dữ liệu để gửi qua WEB SERVICE.
            // Lấy thông tin đăng ký.
            //KDT_SXXK_Service kdtService = new KDT_SXXK_Service();
            //NguyenPhuLieuDangKyInfo webNPLDangKyInfo = new NguyenPhuLieuDangKyInfo();
            //webNPLDangKyInfo.MaHaiQuan = this._MaHaiQuan;
            //webNPLDangKyInfo.MaDoanhNghiep = this._MaDoanhNghiep;
            //webNPLDangKyInfo.MaDaiLy = this.MaDaiLy;

            //// Lấy danh sách nguyên phụ liệu.
            //int count = this._NPLCollection.Count;
            //webNPLDangKyInfo.NPLInfoCollection = new NguyenPhuLieuInfo[count];
            //int i = 0;
            //foreach (NguyenPhuLieu nplDetail in this._NPLCollection)
            //{
            //    NguyenPhuLieuInfo webNPLInfo = new NguyenPhuLieuInfo();
            //    webNPLInfo.MaHaiQuan = this._MaHaiQuan;
            //    webNPLInfo.MaDoanhNghiep = this._MaDoanhNghiep;
            //    webNPLInfo.Ma = nplDetail.Ma;
            //    webNPLInfo.Ten = nplDetail.Ten;
            //    webNPLInfo.MaHS = nplDetail.MaHS;
            //    webNPLInfo.DVT_ID = nplDetail.DVT_ID;
            //    webNPLDangKyInfo.NPLInfoCollection[i] = webNPLInfo;
            //    i++;
            //}

            //// Thực hiện.
            //return kdtService.SXXK_NguyenPhuLieuDangKy_Upload(this._SoTiepNhan, this._MaHaiQuan, this._MaDoanhNghiep, this._NgayTiepNhan.Year, webNPLDangKyInfo.NPLInfoCollection, ref DanhSachDaDangKy);
            return 0;
        }
        //-----------------------------------------------------------------------------------------
        public void WSRequestStatus()
        {
             //Các bước thực hiện:
             //1. Lấy thông tin từ Web Service.
             //2. Cập nhật thông tin đăng ký.
             //3. Xóa danh sách nguyên phụ liệu cũ.
             //4. Cập nhật lại danh sách nguyên phụ liệu mới.
             //5. Nếu trạng thái: Đã duyệt chính thức thì chuyển danh sách nguyên phụ liệu đã duyệt sang phân hệ SXXK.

             //1. Lấy danh sách từ Web Service.
            KDT_SXXK_Service kdtService = new KDT_SXXK_Service();
            DataSet ds = kdtService.NguyenPhuLieu_RequestStatus(this._SoTiepNhan, this._MaHaiQuan, this._MaDoanhNghiep, Convert.ToInt16(this._NgayTiepNhan.Year));
            DataTable dt = ds.Tables[0];
            if (dt.Rows.Count > 0)
            {
                SqlDatabase db = (SqlDatabase)DatabaseFactory.CreateDatabase();
                using (SqlConnection connection = (SqlConnection) db.CreateConnection())
                {
                    connection.Open();
                    SqlTransaction transaction = connection.BeginTransaction();
                    try
                    {
                        // 2. Cập nhật thông tin đăng ký.
                        this._TrangThaiXuLy = Convert.ToInt32(dt.Rows[0]["TrangThaiXL"]);

                        // 3. Xóa danh sách nguyên phụ liệu cũ.
                        this.LoadNPLCollection();
                        NguyenPhuLieu.DeleteCollection(this._NPLCollection, transaction);
                        this.NPLCollection.Clear();

                        // 4. Cập nhật lại danh sách nguyên phụ liệu mới.
                        int stt = 1;
                        foreach (DataRow row in dt.Rows)
                        {
                            NguyenPhuLieu npl = new NguyenPhuLieu();
                            npl.Master_ID = this._ID;
                            npl.Ma = row["Ma_NPL"].ToString();
                            npl.Ten = row["Ten_NPL"].ToString();
                            npl.MaHS = row["Ma_HS"].ToString();
                            npl.DVT_ID = row["Ma_DVT"].ToString();
                            npl.STTHang = stt++;
                            this._NPLCollection.Add(npl);
                        }

                        // Cập nhật vào CSDL.
                        this.InsertUpdateFull(transaction);

                        // 5. Nếu trạng thái là đã duyệt chính thức thì chuyển danh sách nguyên phụ liệu đã duyệt sang phân hệ SXXK.
                        if (this._TrangThaiXuLy == BLL.TrangThaiXuLy.DA_DUYET)
                        {
                            foreach (DataRow row in dt.Rows)
                            {
                                BLL.SXXK.NguyenPhuLieu npl = new BLL.SXXK.NguyenPhuLieu();
                                npl.MaHaiQuan = this._MaHaiQuan;
                                npl.MaDoanhNghiep = this._MaDoanhNghiep;
                                npl.Ma = row["Ma_NPL"].ToString();
                                npl.Ten = row["Ten_NPL"].ToString();
                                npl.MaHS = row["Ma_HS"].ToString();
                                npl.DVT_ID = row["Ma_DVT"].ToString();

                                npl.InsertUpdateTransaction(transaction);
                            }
                        }

                        transaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        transaction.Rollback();
                        throw new Exception(ex.Message);
                    }
                    finally
                    {
                        connection.Close();
                    }
                }
            }
            else
            {
                this.Update();
            }
        }
        #endregion WebService Methods của Softech

        #region WebService Methods của Hải quan
        private string ConfigPhongBi(int type, int function)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("TemplateXML\\PhongBi.xml");
            //set thong tin hai quan den
            XmlNode nodeTo = doc.GetElementsByTagName("To")[0];
            XmlNode nodeName = nodeTo.ChildNodes[0];
            nodeName.InnerText = Company.BLL.DuLieuChuan.DonViHaiQuan.GetName(this._MaHaiQuan);
            XmlNode nodeIdentity = nodeTo.ChildNodes[1];
            nodeIdentity.InnerText = this.MaHaiQuan;

            ////set thong so gui di subject
            XmlNode nodeSubject = doc.GetElementsByTagName("Subject")[0];
            XmlNode nodeType = nodeSubject.ChildNodes[0];
            nodeType.InnerText = type.ToString();

            XmlNode nodeFunction = nodeSubject.ChildNodes[1];
            nodeFunction.InnerText = function.ToString();

            XmlNode nodeReference = nodeSubject.ChildNodes[2];
            nodeReference.InnerText = (System.Guid.NewGuid().ToString());

            XmlNode nodeMessageID = doc.GetElementsByTagName("messageId")[0];
            nodeMessageID.InnerText = (System.Guid.NewGuid().ToString());
          
            return doc.InnerXml;
        }
      
        #region Khai báo danh sách nguyên phụ liệu
        public string WSSendXML(string pass)
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(ConfigPhongBi(MessgaseType.DanhMucNguyenPhuLieu,MessgaseFunction.KhaiBao));
            XmlDocument docNPL = new XmlDocument();
            docNPL.LoadXml(ConvertCollectionToXML());

            
            //luu vao string
            XmlNode root = docNPL.GetElementsByTagName("Root")[0].CloneNode(true);
            XmlNode Content = doc.GetElementsByTagName("Content")[0];
            XmlNode root2 = doc.CreateElement("Root");
            root2.InnerXml = root.InnerXml;
            foreach (XmlAttribute attRoot in root.Attributes)
            {
                XmlAttribute att = doc.CreateAttribute(attRoot.Name);
                att.Value = attRoot.Value;
                root2.Attributes.Append(att);
            }
            Content.AppendChild(root2);
            WS.KhaiDienTu.KDTService kdt = new Company.BLL.WS.KhaiDienTu.KDTService();
            string kq=kdt.Send(doc.InnerXml,pass);
            return kq;
        }
        private string ConvertCollectionToXML()
        {
            //load du lieu
            XmlDocument docNPL = new XmlDocument();
            docNPL.Load("TemplateXML\\KhaiBaoNguyenPhuLieu.xml");
            XmlNode nplNode = docNPL.GetElementsByTagName("NPL")[0];
            XmlNode nodeHQNhan = docNPL.GetElementsByTagName("HQ_NHAN")[0];
            nodeHQNhan.Attributes["MA_HQ"].Value = this.MaHaiQuan;
            nodeHQNhan.Attributes["TEN_HQ"].Value = Company.BLL.DuLieuChuan.DonViHaiQuan.GetName(this._MaHaiQuan);
            if (this.NPLCollection == null || this.NPLCollection.Count == 0)
            {
                this.NPLCollection = NguyenPhuLieu.SelectCollectionBy_Master_ID(this.ID);
            }
            foreach (NguyenPhuLieu npl in this._NPLCollection)
            {
                XmlNode node = docNPL.CreateElement("NPL.ITEM");
                XmlAttribute sttAtt = docNPL.CreateAttribute("STT");
                sttAtt.Value = npl.STTHang.ToString();
                node.Attributes.Append(sttAtt);

                XmlAttribute maAtt = docNPL.CreateAttribute("MA_NPL");
                maAtt.Value = npl.Ma;
                node.Attributes.Append(maAtt);

                XmlAttribute MaHSAtt = docNPL.CreateAttribute("MA_HS");
                MaHSAtt.Value = npl.MaHS;
                node.Attributes.Append(MaHSAtt);

                XmlAttribute TenAtt = docNPL.CreateAttribute("TEN_NPL");
                TenAtt.Value = npl.Ten;
                node.Attributes.Append(TenAtt);
                nplNode.AppendChild(node);
            }
            return docNPL.InnerXml;
        }
        #endregion Khai báo danh sách nguyên phụ liệu

        #region Huy khai báo danh mục nguyên phụ liệu

        public string WSCancelXML(string pass)
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(ConfigPhongBi(MessgaseType.DanhMucNguyenPhuLieu, MessgaseFunction.HuyKhaiBao));
            
            XmlDocument docNPL = new XmlDocument();
            docNPL.Load("TemplateXML\\HuyKhaiBaoNguyenPhuLieu.xml");

            XmlNode nodeHQNhan = docNPL.GetElementsByTagName("HQ_NHAN")[0];
            nodeHQNhan.Attributes["MA_HQ"].Value = this.MaHaiQuan;
            nodeHQNhan.Attributes["TEN_HQ"].Value = Company.BLL.DuLieuChuan.DonViHaiQuan.GetName(this._MaHaiQuan);

            XmlNode nodeDuLieu = docNPL.GetElementsByTagName("DU_LIEU")[0];
            nodeDuLieu.Attributes["SO_TN"].Value = this.SoTiepNhan.ToString();
            nodeDuLieu.Attributes["NAM_TN"].Value = this.NgayTiepNhan.Year.ToString();

            XmlNode root = docNPL.GetElementsByTagName("Root")[0].CloneNode(true);
            XmlNode Content = doc.GetElementsByTagName("Content")[0];
            XmlNode root2 = doc.CreateElement("Root");

            root2.InnerXml = root.InnerXml;
            Content.AppendChild(root2);
            WS.KhaiDienTu.KDTService kdt = new Company.BLL.WS.KhaiDienTu.KDTService();
            string kq = kdt.Send(doc.InnerXml, pass);
            return kq;
     
        }

        #endregion Huy khai báo danh mục nguyên phụ liệu

        #region Lấy phản hồi

        public string WSRequestXML(string pass)
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(ConfigPhongBi(MessgaseType.DanhMucNguyenPhuLieu, MessgaseFunction.LayPhanHoi));

            XmlDocument docNPL = new XmlDocument();
            docNPL.Load("TemplateXML\\LayPhanHoiNguyenPhuLieu.xml");

            XmlNode nodeHQNhan = docNPL.GetElementsByTagName("HQ_NHAN")[0];
            nodeHQNhan.Attributes["MA_HQ"].Value = this.MaHaiQuan;
            nodeHQNhan.Attributes["TEN_HQ"].Value = Company.BLL.DuLieuChuan.DonViHaiQuan.GetName(this._MaHaiQuan);

            XmlNode nodeDuLieu = docNPL.GetElementsByTagName("DU_LIEU")[0];
            nodeDuLieu.Attributes["SO_TN"].Value = this.SoTiepNhan.ToString();
            nodeDuLieu.Attributes["NAM_TN"].Value = this.NgayTiepNhan.Year.ToString();

            XmlNode root = docNPL.GetElementsByTagName("Root")[0].CloneNode(true);
            XmlNode Content = doc.GetElementsByTagName("Content")[0];
            XmlNode root2 = doc.CreateElement("Root");

            root2.InnerXml = root.InnerXml;
            Content.AppendChild(root2);

            WS.KhaiDienTu.KDTService kdt = new Company.BLL.WS.KhaiDienTu.KDTService();
            string kq = kdt.Request(doc.InnerXml, pass);
            return kq;

        }

        #endregion Lấy phản hồi
        #endregion WebService Methods của Hải quan

        #region Webservice của FPT

        #region Khai báo danh sách nguyên phụ liệu
        //cap nhat
        public string WSUpdateXMLFPT(string pass, NguyenPhuLieuCollection collection)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("FPTService\\SXXK_NPL_CAPNHAT.xml");

            //luu thong tin gui
            XmlNode hq = doc.SelectSingleNode("Root/SXXK/THONG_TIN/HQ_NHAN");
            hq.Attributes["MA_HQ"].Value = this.MaHaiQuan;
            hq.Attributes["TEN_HQ"].Value = Company.BLL.DuLieuChuan.DonViHaiQuan.GetName(this.MaHaiQuan);

            XmlNode data = doc.SelectSingleNode("Root/SXXK/THONG_TIN/DU_LIEU");
            data.Attributes["SO_DK"].Value = this.SoTiepNhan.ToString();

            XmlNode nplNode = doc.SelectSingleNode("Root/SXXK/THONG_TIN/DU_LIEU/NPL");
            foreach (NguyenPhuLieu npl in collection)
            {
                XmlNode node = doc.CreateElement("NPL.ITEM");
               
                XmlAttribute maAtt = doc.CreateAttribute("MA_NPL");
                maAtt.Value = npl.Ma;
                node.Attributes.Append(maAtt);

                XmlAttribute MaHSAtt = doc.CreateAttribute("MA_HS");
                MaHSAtt.Value = npl.MaHS;
                node.Attributes.Append(MaHSAtt);

                XmlAttribute TenAtt = doc.CreateAttribute("TEN_NPL");
                TenAtt.Value = npl.Ten;
                node.Attributes.Append(TenAtt);


                XmlAttribute DVTAtt = doc.CreateAttribute("MA_DVT");
                DVTAtt.Value = npl.DVT_ID;
                node.Attributes.Append(DVTAtt);
                nplNode.AppendChild(node);
            }
            WS.FPT.SXXK.SXXKService service = new Company.BLL.WS.FPT.SXXK.SXXKService();
            string kq = service.DataProcess(doc.InnerXml, "ecusxgeiyklgA\\SmqUK@rbiqDyAgbXBIlBTUTL;", pass);
            return kq;
        }

        //dang ky
        public string WSSendXMLFPT(string pass)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("FPTService\\SXXK_NPL_CAPNHAT.xml");

            //luu thong tin gui
            XmlNode hq = doc.SelectSingleNode("Root/SXXK/THONG_TIN/HQ_NHAN");
            hq.Attributes["MA_HQ"].Value = this.MaHaiQuan;
            hq.Attributes["TEN_HQ"].Value = Company.BLL.DuLieuChuan.DonViHaiQuan.GetName(this.MaHaiQuan);

            XmlNode nplNode = doc.SelectSingleNode("Root/SXXK/THONG_TIN/DU_LIEU/NPL");
           if (_NPLCollection == null || _NPLCollection.Count == 0)
           {
               _NPLCollection = NguyenPhuLieu.SelectCollectionBy_Master_ID(this.ID);
           }
           foreach (NguyenPhuLieu npl in _NPLCollection)
            {
                XmlNode node = doc.CreateElement("NPL.ITEM");

                XmlAttribute maAtt = doc.CreateAttribute("MA_NPL");
                maAtt.Value = npl.Ma;
                node.Attributes.Append(maAtt);

                XmlAttribute MaHSAtt = doc.CreateAttribute("MA_HS");
                MaHSAtt.Value = npl.MaHS;
                node.Attributes.Append(MaHSAtt);

                XmlAttribute TenAtt = doc.CreateAttribute("TEN_NPL");
                TenAtt.Value = npl.Ten;
                node.Attributes.Append(TenAtt);

                XmlAttribute DVTAtt = doc.CreateAttribute("MA_DVT");
                DVTAtt.Value = npl.DVT_ID;
                node.Attributes.Append(DVTAtt);
                nplNode.AppendChild(node);
            }
            WS.FPT.SXXK.SXXKService service = new Company.BLL.WS.FPT.SXXK.SXXKService();
            string kq = service.DataProcess(doc.InnerXml, "ecusxgeiyklgA\\SmqUK@rbiqDyAgbXBIlBTUTL;", pass);
            return kq;

        }

        #endregion Khai báo danh sách nguyên phụ liệu

        #region Hủy khai báo danh sách nguyên phụ liệu

        //huy dang ky
        public string WSHuyXMLFPT(string pass)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("FPTService\\SXXK_NPL_HUY.xml");

            //luu thong tin gui
            XmlNode hqNhan = doc.SelectSingleNode("Root/SXXK/THONG_TIN/HQ_NHAN");
            hqNhan.Attributes["MA_HQ"].Value = this.MaHaiQuan;
            hqNhan.Attributes["TEN_HQ"].Value = Company.BLL.DuLieuChuan.DonViHaiQuan.GetName(this.MaHaiQuan);

            XmlNode data = doc.SelectSingleNode("Root/SXXK/THONG_TIN/DU_LIEU");
            data.Attributes["SO_DK"].Value = this.SoTiepNhan.ToString();
            WS.FPT.SXXK.SXXKService service = new Company.BLL.WS.FPT.SXXK.SXXKService();
            string kq = service.DataProcess(doc.InnerXml, "ecusxgeiyklgA\\SmqUK@rbiqDyAgbXBIlBTUTL;", pass);
            return kq;
        }

        #endregion Hủy khai báo danh sách nguyên phụ liệu


        #region Lấy thông tin trả lời từ hải quan

        //lây thong tin dang ky
        public string WSRequestXMLFPT(string pass)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("FPTService\\SXXK_TRALOI_DK.xml");

            //luu thong tin gui
            XmlNode hq = doc.SelectSingleNode("Root/SXXK");
            hq.Attributes["TRA_LOI"].Value = "DANG_KY_NPL";

            XmlNode hqNhan = doc.SelectSingleNode("Root/SXXK/THONG_TIN/HQ_NHAN");
            hqNhan.Attributes["MA_HQ"].Value = this.MaHaiQuan;
            hqNhan.Attributes["TEN_HQ"].Value = Company.BLL.DuLieuChuan.DonViHaiQuan.GetName(this.MaHaiQuan);

            XmlNode data = doc.SelectSingleNode("Root/SXXK/THONG_TIN/DU_LIEU");
            data.Attributes["SO_DK"].Value = this.SoTiepNhan.ToString();
            WS.FPT.SXXK.SXXKService service = new Company.BLL.WS.FPT.SXXK.SXXKService();
            string kq = service.DataProcess(doc.InnerXml, "ecusxgeiyklgA\\SmqUK@rbiqDyAgbXBIlBTUTL;", pass);
            return kq;
        }

        #endregion Lấy thông tin trả lời từ hải quan
   

        #endregion Webservice của FPT

    }
}